# -*- coding: utf-8 -*-
"""
配置工具模块
负责读取和管理应用程序的配置信息
"""
import yaml


def read_config(config_path='config.yaml'):
    """
    读取配置文件
    :param config_path: 配置文件路径
    :return: 配置字典，如果读取失败则返回None
    """
    try:
        with open(config_path, 'r', encoding='utf-8') as f:
            return yaml.safe_load(f)
    except FileNotFoundError:
        print(f"配置文件 {config_path} 不存在")
        return None
    except Exception as e:
        print(f"读取配置文件出错: {e}")
        return None


# 加载配置并验证必要项
def load_and_validate_config(config_path='config.yaml'):
    """
    加载配置并验证必要配置项是否存在
    :param config_path: 配置文件路径
    :return: 有效的配置字典，如果验证失败则退出程序
    """
    config = read_config(config_path)
    if not config:
        print('配置文件加载失败，程序退出')
        exit(1)

    # 验证必要的配置项
    required_items = ['db_path', 'correct_file', 'file_path', 'use_columns', 
                     'rename_columns', 'output_dir', 'output_filename_prefix']
    missing_items = [item for item in required_items if item not in config]
    
    if missing_items:
        print(f'配置文件缺少必要项: {missing_items}')
        exit(1)
    
    return config